(function (windows){
// 接口对象
var de = {
    // 网站域名
    web_host: 'http://127.0.0.1',
    // 接口域名
    api_host: 'http://127.0.0.1/service/public/index.php?s=',
    // API接口
    uri: {
        // 登陆接口
        login: '/api/Login/index',
        // 注册接口
        reg: '/api/Login/reg',
        // 忘记密码接口
        forget_passwd: '/api/Login/forget_passwd',
        // 退出登陆接口
        login_logout: '/api/Login/logout',
        // 获取用户信息接口
        user_index: '/api/User/index',
        // 商品列表接口
        goods_index: '/api/Goods/index',
        // 商品详情接口
        goods_detail: '/api/Goods/detail',
        // 加入购物车接口
        order_addcar: '/api/Order/addcar',
        // 删除购物车接口
        order_delcar: '/api/Order/delcar',
        // 购物车商品列表接口
        order_car: '/api/Order/car',
        // 生成订单接口
        order_index: '/api/Order/index',
        // 订单列表接口
        order_get: '/api/Order/get',
        // 确认收货接口
        order_confirm: '/api/Order/confirm',
        // 收货地址列表接口
        address_index: '/api/Address/index',
        // 保存收货地址接口
        address_save: '/api/Address/save',
        // 保存默认收货地址接口
        address_set_default: '/api/Address/set_default',
        // 删除收货地址接口
        address_del: '/api/Address/del',

        // 上传附件接口
        file_upload: '/api/File/upload',
        // 上传文件分类接口
        file_type: '/api/File/type',
        // 文件列表接口
        file_index: '/api/File/index'
    },
    api: {},
    header: {},
    created: function (){
        // 登陆信息
        var token = common.auth_login();
        // token放入header中
        de.header['Authorization'] = token;
        // token值
        var token = token == false ? '' : '&t=' + token ;
        for (var i in this.uri) {
            this.api[i] = this.api_host + this.uri[i] + token;
        }
    }

};

// 接口对象
var common = {
    // ================ public ================
    // 自定义ajax
    ajax: {
        post: function (url, params, callback){
            var xhr = new XMLHttpRequest();
            // 设置超时时间,0表示永不超时
            xhr.timeout = 30;
            // 设置期望的返回数据类型
            xhr.responseType = '';
            // 设置请求方式和请求地址 (第三个参数为是否异步)
            xhr.open('post', url, true);
            // 请求成功
            xhr.onload = function (){
                if (xhr.status == 200) {
                    callback(xhr.responseText);
                    // console.log('请求成功');
                }
            }
            // 请求错误
            xhr.onerror = function (){
                console.log('请求错误');
            }
            // 请求结束
            xhr.onloadend = function (){
                console.log('请求结束');
            }
            // 请求超时
            xhr.ontimeout = function (){
                console.log('请求超时');
            }
            xhr.send(params);
        },
        // 拾取get参数
        get: function ( param ){
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var i = 0; i < vars.length; i++) {
                var pair = vars[i].split("=");
                if(pair[0] == param){
                    return pair[1];
                }
            }
            return(false);
        },
    },
    // 拾取数据
    pickData: function (data, item){
        var request = {};
        for (var i in item) {
            request[item[i]] = data[item[i]];
        }
        return request;
    },
    // 简化跳转方法
    href: function (url){
        window.location.href = url;
    },
    // 查看本地上传文件预览地址
    see_url: function (file){
        return (window.URL || window.webkitURL).createObjectURL(file);
    },
    // 查看本地上传文件预览地址
    file_read: function (querySelect, binary, callback){
        // 选择器
        var file = document.querySelector(querySelect).files[0];
        // 实例化
        var reader = new FileReader();
        reader.onload = function(){
            var res = binary ? window.btoa(this.result) : this.result ;
            callback(res);
        };
        if (binary) {
            reader.readAsBinaryString(file);
        } else {
            reader.readAsDataURL(file);
        }
    },
    // 上传文件
    upload: function ( querySelect , name ){
        var formData = new FormData();
        // 选择器
        var formFile = document.querySelector(querySelect).files;
        // 预览地址
        var urlData = [];
        for (var i = 0; i < formFile.length; i++) {
            // 图片路径
            urlData.push(this.see_url(formFile[i]));
            // FormData追加数据
            formData.append(name, formFile[i]);
        }
        return {
            formData: formData,
            urlData: urlData,
        };
    },
    // ================ public end ================
    // 验证登陆的方法
    auth_login: function (){
        var login = window.localStorage.getItem('login');
        if (login) {
            return login;
        }
        return false;
    },
    // 退出登陆
    logout: function (the){
        if (!this.auth_login) {
            return true;
        }
        // 请求退出
        axios.post(de.api.login_logout).then(function (data){
            var dd = data.data;
            if (dd.code == 200) {
                // 清除缓存
                window.localStorage.removeItem("login");
                if (typeof the == "object") {
                    this.de_alert(the, true, '成功', dd.info, function (){
                        location.reload();
                    });
                }
                location.reload();
            } else {
                if (typeof the == "object") {
                    this.de_alert(the, true, '失败', dd.info, function (){
                        location.reload();
                    });
                }
            }
        }).catch(function(error){
            console.log(error);
        });
    },
    de_alert: function ( vue , show , title , msg , callback ){
        vue.de_alert = {
            show: show,
            title: title,
            msg: msg,
            close: callback
        }
    }
};

// 放入window全局对象中
windows.de = de;
// 初始化
de.created();

windows.common = common;

})(window);
